package com.ljf.framework.socket;


import java.util.HashMap;
import java.util.Map;

/**
 * 说明：Socket传递他消息的基类
 * <p>
 * <p>
 * {
 * "mainMessages":{
 * "message":"nihao123"
 * },
 * "appCode":"mj",
 * "type":"1",
 * "messageTo":"qw"
 * }
 *
 * @Auther: lijinfeng
 * @Date: 2023/9/25
 */
public class LjfSocketMessage {

    /**
     * app名称：
     * <p>
     * 例：【kxmj】 --开心麻将
     * 【hkddz】 --欢快斗地主
     */
    private String appCode;

    /**
     * 消息类型
     * ALL 所有人
     * ONE 一个人
     * OTHER 部分人
     */
    private String type;

    /**
     * 聊天区域：具有唯一性，便于会话分组标识
     * <p>
     * 例：
     * [sj001] --标识世界频道
     * [fj001] --标识房间频道
     * [yx001] --标识游戏中的频道
     */
    private String regionId;

    /**
     * 消息来源
     */
    private String messageFrom;

    /**
     * 消息目标
     */
    private String messageTo;

    /**
     * 主体消息内容
     */
    private Map<String, String> mainMessages = new HashMap<>();

    @Override
    public String toString() {
        return "LjfSocketMessage{" +
                "appCode='" + appCode + '\'' +
                ", type='" + type + '\'' +
                ", regionId='" + regionId + '\'' +
                ", messageFrom='" + messageFrom + '\'' +
                ", messageTo='" + messageTo + '\'' +
                ", mainMessages=" + mainMessages +
                '}';
    }


    public LjfSocketMessage(String appCode, String username, String type, String message) {
        this.appCode = appCode;
        this.messageTo = username;
        this.type = type;
        this.getMainMessages().put("message", message);
    }

    public String getRegionId() {
        return regionId;
    }

    public void setRegionId(String regionId) {
        this.regionId = regionId;
    }


    public LjfSocketMessage() {

    }

    /**
     * 获取消息来源的key
     *
     * @return
     */
    public String getFromKey() {
        return this.getAppCode() + this.getMessageFrom();
    }

    /**
     * 获取消息目标的key
     *
     * @return
     */
    public String getToKey() {
        // 不送用户则表示发送的是区域信息不是单个目标信息
        if (messageTo == null || messageTo.equals("")) {
            return this.getAppCode() + this.getRegionId();
        }
        return this.getAppCode() + this.getMessageTo();
    }

    public String getMessageFrom() {
        return messageFrom;
    }

    public void setMessageFrom(String messageFrom) {
        this.messageFrom = messageFrom;
    }

    public String getMessageTo() {
        return messageTo;
    }

    public void setMessageTo(String messageTo) {
        this.messageTo = messageTo;
    }


    public String getAppCode() {
        return appCode;
    }

    public void setAppCode(String appCode) {
        this.appCode = appCode;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public Map<String, String> getMainMessages() {
        return mainMessages;
    }

    public void setMainMessages(Map<String, String> mainMessages) {
        this.mainMessages = mainMessages;
    }

    public String get(String s) {
        return mainMessages.get(s);
    }


}
